package com.jsmtr.rms.service;

import java.util.List;
import java.util.Map;

import com.jsmtr.rms.entity.*;

public interface IDoBSService {

    /**
     * 获得考场分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param room    考场实体
     * @return Map
     */
    Map<String, Object> getBSRooms(int page, int perpage, DoBSRoom room) throws Exception;

    /**
     * 获得考场信息
     *
     * @param name 考场名称
     * @return DoBSRoom
     */
    DoBSRoom getRoomByName(String name) throws Exception;


    /**
     * 获得考试人员
     * @param pid 方案id
     * @param fid 流程id
     * @return List
     */
    List<String> FastPlan(String fid, String pid, String chose) throws Exception;

    DoBSRoom getRoomByAddress(String address) throws Exception;

    /**
     * 获得考场信息
     *
     * @param id 考场ID
     * @return DoBSRoom
     */
    DoBSRoom getRoomById(String id) throws Exception;

    /**
     * 获得考场信息
     *
     * @return List<DoBSRoom>
     */
    List<DoBSRoom> getRooms() throws Exception;

    /**
     * 获得考场地址
     *
     * @return List<DoBSRoom>
     */
    List<String> getRoomsAddress() throws Exception;

    /**
     * 获得考场信息
     *
     * @param ids 考试ID集合
     * @return List<DoBSRoom>
     */
    List<DoBSRoom> getRooms(String[] ids) throws Exception;

    /**
     * 获得考试分页信息
     *
     * @param page    当前页
     * @param perpage 每页显示数
     * @param exam    考试实体
     * @return Map
     */
    Map<String, Object> getBSExams(int page, int perpage, DoBSExam exam) throws Exception;

    /**
     * 获得考试信息
     *
     * @param id 考试ID
     * @return DoBSExam
     */
    DoBSExam getExamById(String id) throws Exception;

    /**
     * 获得考试信息
     *
     * @param ids 考试ID集合
     * @return List<DoBSExam>
     */
    List<DoBSExam> getExams(String[] ids) throws Exception;

    /**
     * 获得考试信息
     *
     * @param rid 考场ID
     * @return List<DoBSExam>
     */
    List<DoBSExam> getExams(String rid) throws Exception;

    /**
     * 获得笔试安排信息
     *
     * @param userid 应聘者ID
     * @param fid    应聘流程ID
     * @return DoBSUser
     */
    DoBSUser getBsUser(String userid, String fid) throws Exception;


    /**
     * 随机获取一条获得笔试安排信息
     *
     * @param fid    应聘流程ID
     * @return DoBSUser
     */
    DoBSUser getBsUserByRandom(String fid) throws Exception;


    /**
     * 获得笔试人员信息
     *
     * @param fid         应聘流程ID
     * @param jnames      招聘职位集合
     * @param recruittype 招聘方式
     * @return List<Object   [   ]>
     */
    List<Object[]> getBsUsers(String fid, String[] jnames, int recruittype) throws Exception;

    /**
     * 获得笔试安排信息
     *
     * @param id ID
     * @return DoBSUser
     */
    DoBSUser getBsUser(String id) throws Exception;

    /**
     * 获得笔试安排信息
     *
     * @param uids 应聘者ID集合
     * @param fid  招聘流程ID
     * @return List<DoBSUser>
     */
    List<DoBSUser> getBsUsers(String[] uids, String fid) throws Exception;

    /**
     * 获得素质测试安排信息
     *
     * @param uids 应聘者ID集合
     * @param fid  招聘流程ID
     * @return List<DoBSUser>
     */
    List<DoSSUser> getSsUsers(String[] uids, String fid) throws Exception;

    /**
     * 获得笔试安排信息
     *
     * @param uids        应聘者ID集合
     * @param fid         招聘流程ID
     * @param recruittype 招聘方式
     * @return List<DoBSUser>
     */
    List<Object[]> getBsUser(String[] uids, String fid, int recruittype) throws Exception;

    /**
     * 获得笔试安排信息
     *
     * @param fid         应聘流程ID
     * @param uids        应聘者ID集合
     * @param recruittype 招聘方式
     * @return List<Object   [   ]>
     */
    List<Object[]> getBsPlan(String fid, String[] uids, int recruittype) throws Exception;

    /**
     * 获得笔试准考证信息
     *
     * @param fid         应聘流程ID
     * @param uids        应聘者ID集合
     * @param recruittype 招聘方式
     * @return List<Object   [   ]>
     */
    List<Object[]> getBsTicket(String fid, String[] uids, int recruittype) throws Exception;

    /**
     * 获得考场已经安排的考生人数
     *
     * @param fid       应聘流程ID
     * @param kcname    考试名称
     * @param starttime 考试开始时间
     * @return Integer
     */
    int getUserCount(String fid, String kcname, String starttime) throws Exception;

    /**
     * 获得通过建立筛选可进入考试，但暂未安排考试的人数
     *
     * @param fid       应聘流程ID
     * @param kcname    考试名称
     * @param starttime 考试开始时间
     * @return Integer
     */
    int getUserCountNew(String fid, String kcname, String starttime) throws Exception;

    /**
     * 获得当年准考证已编排数
     *
     * @param year 年份
     * @return Integer
     */
    int getTicketCount(String year) throws Exception;

    int getTicketCountNew(String year) throws Exception;

    /*    
     * 根据身份证号获取考试安排
     * @author cyx  
     * @date 2018/8/21 12:40  
     * @param cardNo 身份证号
 * @param fid  流程id
     * @return com.jsmtr.rms.entity.DoBSUser  
     */
    List getBsUserByCardNo(String cardNo,String fid) throws Exception;


    /*
     * 根据准考证号和应聘岗位获取考试安排
     * @author cyx
     * @date 2018/8/21 12:40
     * @param cardNo 身份证号
 * @param fid  流程id
     * @return com.jsmtr.rms.entity.DoBSUser
     */
    List getBsUserByTicketnumAndJname(String ticketnum,String jname,String fid) throws Exception;

    /*    
     * 查询时间段内可以使用的教室
     * @author cyx  
     * @date 2018/8/22 18:59  
     * @param starttime 开始时间
 * @param endtime  结束时间
     * @return java.util.List  
     */ 
    List getCanUseRoom(String starttime,String endtime) throws  Exception;

    /*
     * 根据考场地址查询时间段内可以使用的教室
     * @author cyx
     * @date 2018/8/22 18:59
     * @param starttime 开始时间
 * @param endtime  结束时间
     * @return java.util.List
     */
    List getCanUseRoomByAddress(String starttime,String endtime,String address) throws  Exception;

    /*
        * 根据考场ID查询时间段内可以使用的教�?
        * @author cyx
        * @date 2018/8/22 18:59
        * @param starttime �?始时�?
    * @param endtime  结束时间
        * @return java.util.List
        */
    List getCanUseRoomByRoomId(String starttime, String endtime,String address) throws Exception;

    /*
     * 根据考试名称获取
     * @author cyx
     * @date 2018/8/24 8:47
     * @param kcname
     * @return com.jsmtr.rms.entity.DoBSExam
     */
    Object getBSExamByName(String name) throws Exception;


}
